---
id: Nginx配置HTTPS域名证书
sidebar_position: 2.8
description: HTTPS其实就是构建在SSL之上的HTTP协议
---
## 配置HTTPS步骤
### 1，检查是否SSL模块
要在Nginx中配置 https，就必须安装 ssl 模块，也就是 http_ssl_module。

```shell title='检查已安装的模块'
[root@iZ2zeausm2jefqqtmpikzqZ ~]# /usr/local/nginx/sbin/nginx -V
nginx version: nginx/1.22.0
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC)
built with OpenSSL 1.0.2k-fips  26 Jan 2017
TLS SNI support enabled
configure arguments: --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module
```
`--with-http_ssl_module` 表示已经安装了 ssl 模块，省略第二步。
### 2. 安装 ssl 模块
1. 进入nginx的解压目录。`/root/nginx-1.22.0`
2. 新增ssl模块(原来安装的模块都需要保留)
    ```conf
    ./configure \
    --prefix=/usr/local/nginx \
    --pid-path=/var/run/nginx/nginx.pid \
    --lock-path=/var/lock/nginx.lock \
    --error-log-path=/var/log/nginx/error.log \
    --http-log-path=/var/log/nginx/access.log \
    --with-http_gzip_static_module \
    --http-client-body-temp-path=/var/temp/nginx/client \
    --http-proxy-temp-path=/var/temp/nginx/proxy \
    --http-fastcgi-temp-path=/var/temp/nginx/fastcgi \
    --http-uwsgi-temp-path=/var/temp/nginx/uwsgi \
    --http-scgi-temp-path=/var/temp/nginx/scgi  \
    --with-http_ssl_module
    ```
3. 编译和安装
    ```conf
    make && make install
    ```
### 3. 配置HTTPS
1. 把ssl证书 `*.crt/pem` 和 `*.key` 拷贝到 `/usr/local/nginx/conf/ssl` 目录中。
2. 新增 server 监听 443 端口。
    ```conf
    server {
       listen       443 ssl;
       server_name  jk.wkq.pub;

       ssl_certificate      ./ssl/8136669_jk.wkq.pub.pem;
       ssl_certificate_key  ./ssl/8136669_jk.wkq.pub.key;

       ssl_session_cache    shared:SSL:1m;
       ssl_session_timeout  5m;

       ssl_ciphers  HIGH:!aNULL:!MD5;
       ssl_prefer_server_ciphers  on;

       location / {
          proxy_pass  http://jk.wkq.pub:8080;
          proxy_set_header Host $proxy_host;
          proxy_set_header X-Real-IP $remote_addr;
          proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
       }
    }
    ```
### 4. reload nginx
```shell
./nginx -s reload
```
## 配置http自动跳转https
http自动跳转https有多种做法，这里记录的是百度的做法。成功部署示例。
* http://git.wkq.pub
* http://jk.wkq.pub
这里以 `http://jk.wkq.pub` 为例
### 1. 新增 server 监听 80 端口
```conf
server {
    listen       80;
    server_name  jk.wkq.pub;
    location / {
        root html/jk;
        index  index.html index.htm;
    }
}
```
### 2. 创建 `index.html` 文件
```shell title='创建 jk 文件夹'
cd /usr/local/nginx/html/
mkdir jk
cd jk
vim index.html
```
将如下内容复制到新创建的 index.html 中,保存。
```html
<html>
  <meta http-equiv="refresh" content="0;url=https://jk.wkq.pub">
</html>
```
### 3. reload nginx
```shell
./nginx -s reload
```
### 4. 测试
访问 http://jk.wkq.pub ,发现会自动跳转到 https://jk.wkq.pub


